package com.ce.pms.house.service;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.ce.pms.base.service.IPmsBaseService;
import com.ce.pms.house.model.GoodsRecordDomain;
import com.ce.pms.house.vo.ExamineApproveVO;
import com.ce.pms.house.vo.GoOutVO;
import com.sitechasia.webx.core.support.Page;

public interface IProRightChangeService extends IPmsBaseService {
	 /**
	 * 方法描述: 查询当前数据库时间
	 * @author 胡煦
	 * Create on:2008-12-16
	 * @param
	 * @return Date
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	 public Date getDataBaseDate();
	/**
	 * 方法描述: 退伙列表页面查询方法,根据传入参数不同执行不同操作，例如：
	 * 1：查询全部，默认按ID降序排序
	 * 2：房号+业主姓名：根据房号，业主名字进行模糊查询，默认按ID降序排序
	 * 3：房号+业主姓名+排序参数：根据房号，业主名字进行模糊查询，然后根据order排序
	 * 4：排序参数：查询全部，然后根据order排序
	 * @author 胡煦
	 * Create on:2008-8-28
	 * @param String houseNumber,String owerName,String order,int currentPage,int pageSize
	 * @return Page
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public Page queryGoOutDoListByPage(String houseNumber,String owerName,String order,int currentPage,int pageSize);
	/**
	 * 方法描述:验证手工输入的房号,并返回其状态
	 * 如果用户输入的房号已经存在退伙审批表且其状态不为退伙结束,则不允许
	 * @author 胡煦
	 * Create on:2008-9-17
	 * @param houseId
	 * @return SysrefcodeDO:返回不为空说明处于退伙中，否则说明没有处于
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public String checkTheHouseNumber(Long houseId);
	/**
	 * 方法描述: 产权变更历史查询方法
	 * 1：操作人,查询某个角色操作的全部历史信息，默认按ID降序排序
	 * 2: 楼栋ID+房号+fitlerStr+排序参数：精确查询某楼栋和模糊查询房号,而且退伙流程阶段已经处于退伙结束的,然后根据order排序
	 * 3: 房号+fitlerStr或者楼栋ID+fitlerStr：精确查询某楼栋或模糊查询房号,而且退伙流程阶段已经处于退伙结束的
	 * @author 胡煦
	 * Create on:2008-8-29
	 * @param String buildingId,String houseNumber,String order,int currentPage,int pageSize
	 * @return Page
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public Page queryHisGoOutDoListByPage(Long buildingId,String houseNumber,String order,Long createId,int currentPage,int pageSize);
	/**
	 * 方法描述: 退伙申请增加
	 * @author 胡煦
	 * Create on:2008-9-2
	 * @param GoOutVO
	 * @return GoOutVO
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public GoOutVO addGoOutRequisition(GoOutVO goOutVO);
	/**
	 * 方法描述: 退伙申请修改
	 * @author 胡煦
	 * Create on:2008-9-2
	 * @param GoOutVO
	 * @return GoOutVO
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public GoOutVO editGoOutRequisition(GoOutVO goOutVO);
	/**
	 * 方法描述: 退伙申请提交
	 * @author 胡煦
	 * Create on:2008-9-2
	 * @param Long goOutId,Long creater
	 * @return GoOutVO
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public GoOutVO referGoOutRequisition(Long goOutId,Long creater);
	 /**
	 * 方法描述: 退伙手续审核
	 * @author 胡煦
	 * Create on:2008-9-10
	 * @param ExamineApproveVO examineApproveVO,String approveRole
	 * @return ExamineApproveVO
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public ExamineApproveVO goOutAuditing(ExamineApproveVO examineApproveVO,String approveRole);
	 /**
	* 方法描述: 退伙手续反审核
	* @author 胡煦
	* Create on:2008-9-11
	* @param nameStr：查询条件班级名称
	* @return 返回当前页的查询结果
	* Edit author:
	* Edit on:
	* 修改原因：
	*/
	public ExamineApproveVO goOutReverseAuditing(ExamineApproveVO examineApproveVO,String approveRole);
	 /**
	 * 方法描述:  变为历史业主方法
	 * @author 胡煦
	 * Create on:2008-9-2
	 * @param Long goOutId,Long houseId
	 * @return boolean
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	 public boolean changeToHisOwers(Long goOutId,Long createrId);
	 /**
		 * 方法描述: 根据退伙申请记录id查询退伙审核记录
		 * @author 胡煦
		 * Create on:2008-9-4
		 * @param goOutId
		 * @return Map<String, ExamineApproveVO>
		 * Edit author:
		 * Edit on:
		 * 修改原因：
		 */
		public Map<String, ExamineApproveVO> findExamineApprovesById(Long goOutId);
	 /**
	* 方法描述: 根据id查询GoOutVO
	* @author 胡煦
	* Create on:2008-9-4
	* @param goOutId
	* @return GoOutVO
	* Edit author:
	* Edit on:
	* 修改原因：
	*/
	public GoOutVO findGoOutVOById(Long goOutId);
	 /**
	 * 方法描述: 验证退伙手续审核合法性
	 * 1、如果对应的退伙ID的审核状态为“新建”、“审核完毕”和“退伙结束”，则不能进行审核操作。
	 * 2、审核人对指定的退伙记录进行审核时，如果该审核记录已经存在审核动作，则不能再次进行审核操作，只能执行反审核操作。
	 * @author 胡煦
	 * Create on:2008-9-11
	 * @param Long goOutId,String approveRole,Long userId
	 * @return boolean
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	 public boolean checkAuditing(Long goOutId,String approveRole,Long userId);

 /**
 * 方法描述: 验证退伙手续反审核合法性
 * 该审核角色只有退伙审核表中审核动作不为空，
 * 并且退伙登记表中退伙状态处于审核中或者审核完毕才能进行反审核操作，
 * 另外，任何进行反审核的记录其审核人要与执行审核过程中的审核人是同一个人
 * @author 胡煦
 * Create on:2008-9-11
 * @param Long goOutId,String approveRole,Long userId
 * @return boolean
 * Edit author:
 * Edit on:
 * 修改原因：
 */
 public boolean checkReverseAuditing(Long goOutId,String approveRole,Long userId);
	 /**
	 * 方法描述: 验证要退伙的产权房与管理房之间是否有关系
	 * @author 胡煦
	 * Create on:2008-9-9
	 * @param houseId
	 * @return boolean:true说明有关系,反之说明没有
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	 public boolean checkTheManagerHouse(Long houseId);

	 /**
	 * 方法描述: 验证该产权房拥有正确有效的帐户
	 * @author 胡煦
	 * Create on:2008-9-9
	 * @param houseId
	 * @return boolean:true说明拥有正确有效的帐户,反之说明没有
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	 public boolean checkTheValidAccount(Long houseId);

	 /**
	  * 方法描述: 验证该产权房拥有正确有效的银行划款账号
	  * @author 胡煦
	  * Create on:2008-9-9
	  * @param houseId
	  * @return boolean:true说明拥有正确有效的帐户,反之说明没有
	  * Edit author:
	  * Edit on:
	  * 修改原因：
	  */
	 public boolean checkTheValidBankAccount(Long houseId);
	/**
	* 方法描述: 查找所有用户,主要是为页面下拉框显示服务
	* @author 胡煦
	* Create on:2008-9-9
	* @param
	* @return Page
	* Edit author:
	* Edit on:
	* 修改原因：
	*/
	//public Page getAllUser(String userName,int pageNo, int pageSize);
	/**
	* 方法描述: 查询所有的移交物品,主要是为页面下拉框显示服务
	* @author 胡煦
	* Create on:2008-9-9
	* @param nameStr：查询条件班级名称
	* @return 返回当前页的查询结果
	* Edit author:
	* Edit on:
	* 修改原因：
	*/
	 public List<GoodsRecordDomain> getAllGoodsRecords();
}
